package com.example.questionnaire_demo.controller;

import com.example.questionnaire_demo.dto.QuestionnaireDetail;
import com.example.questionnaire_demo.model.Questionnaire;
import com.example.questionnaire_demo.service.QuestionnaireService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/questionnaires")
public class QuestionnaireController {

    @Autowired
    private QuestionnaireService questionnaireService;

    /**
     * 根据id获取问卷
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public ResponseEntity<Questionnaire> getQuestionnaire(@PathVariable Long id) {
        Questionnaire questionnaire = questionnaireService.getQuestionnaireById(id);
        if (questionnaire != null) {
            return ResponseEntity.ok(questionnaire);
        } else {
            return ResponseEntity.notFound().build();
        }
    }


    /**
     * 获取所有问卷
     * @return
     */
    @GetMapping
    public ResponseEntity<List<Questionnaire>> getAllQuestionnaires() {
        List<Questionnaire> questionnaires = questionnaireService.getAllQuestionnaires();
        return ResponseEntity.ok(questionnaires);
    }


    /**
     * 创建问卷
     * @param questionnaire
     * @return
     */
    @PostMapping
    public ResponseEntity<Questionnaire> createQuestionnaire(@RequestBody Questionnaire questionnaire) {
        questionnaireService.createQuestionnaire(questionnaire);
        return ResponseEntity.ok(questionnaire);
    }


    /**
     * 更新问卷
     * @param id
     * @param questionnaire
     * @return
     */
    @PutMapping("/{id}")
    public ResponseEntity<Void> updateQuestionnaire(@PathVariable Long id, @RequestBody Questionnaire questionnaire) {
        questionnaire.setId(id);
        questionnaireService.updateQuestionnaire(questionnaire);
        return ResponseEntity.ok().build();
    }


    /**
     * 删除问卷
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteQuestionnaire(@PathVariable Long id) {
        questionnaireService.deleteQuestionnaire(id);
        return ResponseEntity.ok().build();
    }


    /**
     *  获取问卷详情
     * @param id
     * @return
     */
    @GetMapping("/{id}/detail")
public ResponseEntity<QuestionnaireDetail> getQuestionnaireDetail(@PathVariable Long id) {
    QuestionnaireDetail detail = questionnaireService.getQuestionnaireDetail(id);
    if (detail != null) {
        return ResponseEntity.ok(detail);
    } else {
        return ResponseEntity.notFound().build();
    }
}
}